contents
CISC와 RISC는 CPU의 명령어 집합 구조(ISA) 를 설계하는 두 가지 근본적이고 상반된 철학입니다. ISA는 프로세서가 이해하는 명령어들의 어휘집입니다. CISC와 RISC 중 어떤 것을 선택하느냐에 따라 하드웨어의 복잡성, 실행 속도, 전력 소비, 그리고 소프트웨어 컴파일러의 역할이 결정됩니다.
간단히 말해, CISC(복합 명령어 집합 컴퓨터) 는 강력하고 복잡한 명령어를 사용하여 가능한 한 적은 수의 어셈블리 코드 라인으로 작업을 완료하려는 방식입니다. RISC(축소 명령어 집합 컴퓨터) 는 동일한 작업을 많은 수의 단순하고 빠른 명령어를 실행하여 완료하려는 방식입니다.
비유:
- CISC는 "팝콘" 버튼이 있는 고급 다기능 전자레인지와 같습니다. 버튼 하나를 누르면 전력 설정, 시간 설정, 대기, 알림 등 복잡한 일련의 동작을 수행합니다.
- RISC는 단순하고 다재다능한 셰프의 칼과 같습니다. 팝콘을 만들려면 옥수수 알갱이를 꺼내고, 기름을 두르고, 냄비에 넣고, 불을 켜고, 흔드는 등 더 많은 단계가 필요하지만, 각 단계는 매우 단순하고 빠르며, 그 칼은 수많은 다른 작업에도 사용할 수 있습니다.
CISC (복합 명령어 집합 컴퓨터) 🧠
CISC는 컴퓨팅 초창기(1960년대-1970년대)의 지배적인 철학이었습니다. 당시에는 메모리가 느리고 비쌌으며, 컴파일러도 그리 정교하지 않았습니다. CISC의 목표는 프로그래머와 컴파일러의 작업을 단순화하기 위해 하드웨어를 "더 똑똑하게" 만드는 것이었습니다.
철학
"하드웨어가 더 많은 일을 하게 해서, 소프트웨어가 할 일을 줄이자."
특징
- 많고 복잡한 명령어: CISC ISA는 수백 개의 명령어를 가질 수 있으며, 그중 일부는 매우 특화되어 있습니다
- 가변 길이 명령어: 간단한 명령어는 1바이트일 수 있지만, 복잡한 명령어는 10바이트 이상일 수 있습니다. 이는 명령어 해독을 복잡하게 만듭니다
- 많은 명령어에서 메모리 접근: 많은 명령어가 메모리에 있는 데이터에 직접 연산을 수행할 수 있습니다. 예를 들어, 단일 명령어가 메모리에서 두 숫자를 읽어 더한 다음, 그 결과를 다시 메모리에 쓸 수 있습니다
- 다양한 주소 지정 방식: 메모리의 위치를 참조하는 다양한 방법을 제공합니다
예시
메모리 위치(locA, locB)에 있는 두 숫자를 곱하여 그 결과를 locA에 저장하기:
; 단일하고 강력한 CISC 명령어
MUL locA, locB
CPU가 데이터 가져오기, 계산, 저장을 모두 내부적으로 처리합니다.
장단점
- 장점:
- 컴파일러 개발이 (초기에) 더 단순함.
- 컴파일된 코드 크기가 더 작음 (더 적은 수의 명령어 필요).
- 단점:
- 복잡한 하드웨어: CPU가 이 복잡한 명령어들을 해독하고 실행하기 위해 많은 회로가 필요.
- 느린 성능: 복잡한 명령어는 완료하는 데 여러 클럭 사이클이 걸려, 프로세서의 클럭 속도를 높이기 어려움.
- 많은 특화된 명령어들이 컴파일러에 의해 거의 사용되지 않음.
대표적인 예: 인텔 x86 (대부분의 데스크톱 및 노트북에서 사용), 모토로라 68k.
RISC (축소 명령어 집합 컴퓨터) ⚡️
RISC는 1980년대에 CISC의 복잡성에 대한 대응으로 등장했습니다. 연구자들은 대부분의 프로그램에서 소수의 간단한 명령어들이 압도적으로 많이 사용된다는 점에 주목했습니다. RISC 철학은 이 일반적인 경우를 가능한 한 빠르게 만드는 것입니다.
철학
"하드웨어는 단순하고 빠르게 만들고, 똑똑한 소프트웨어(컴파일러)가 어려운 일을 하게 하자."
특징
- 작고 고도로 최적화된 명령어 집합: 일반적인 RISC ISA는 훨씬 적은 수의 명령어를 가집니다.
- 고정 길이 명령어: 모든 명령어의 크기가 동일하여(예: 4바이트), 해독이 매우 빠릅니다.
- 로드/스토어 구조: 이것이 결정적인 특징입니다. 메모리에 접근할 수 있는 명령어는 명시적인
LOAD와STORE작업뿐입니다.ADD,SUB,MUL과 같은 다른 모든 연산은 CPU의 빠른 내부 레지스터에서만 작동합니다. - 파이프라이닝: 명령어의 단순성과 단일 사이클 특성은 파이프라이닝에 이상적입니다. 이는 CPU가 여러 명령어를 동시에 다른 실행 단계에서 작업하는 조립 라인 기술입니다.
예시
이전과 동일한 곱셈 작업을 수행하기:
; 여러 개의 단순한 RISC 명령어
LOAD R1, locA ; 메모리 위치 A에서 데이터를 레지스터 1로 로드
LOAD R2, locB ; 메모리 위치 B에서 데이터를 레지스터 2로 로드
MUL R1, R2 ; 두 레지스터의 값을 곱함
STORE locA, R1 ; 결과를 레지스터 1에서 메모리 위치 A로 저장
이는 더 많은 코드 라인을 필요로 하지만, 각 명령어는 극도로 단순하고 매우 빠르게 (종종 단일 클럭 사이클에) 실행될 수 있습니다.
장단점
- 장점:
- 단순한 하드웨어: 설계, 제작, 디버깅이 더 쉬움.
- 더 빠른 클럭 속도와 파이프라이닝을 통한 더 나은 성능.
- 낮은 전력 소비로 모바일 기기에 이상적.
- 단점:
- 더 큰 컴파일된 코드 크기 (더 많은 명령어 필요).
- 명령어 순서를 최적화하는 정교한 컴파일러에 대한 높은 의존도.
대표적인 예: ARM (거의 모든 스마트폰과 태블릿에서 지배적), MIPS, PowerPC, RISC-V (현대적인 개방형 표준 ISA).
현대의 현실: 흐릿해진 경계
엄격한 RISC 대 CISC 논쟁은 이제 다소 역사적인 것이 되었습니다. 현대의 고성능 프로세서들은 하이브리드 형태입니다.
현대의 인텔 x86 (CISC) 프로세서는 복잡한 CISC 명령어를 실제로 직접 실행하지 않습니다. 대신, CPU의 프론트엔드에 있는 특별한 디코더가 들어오는 복잡한 x86 명령어를 마이크로옵(micro-ops) 이라는 더 간단하고 RISC와 유사한 내부 명령어로 변환합니다.
CPU의 강력한 코어는 본질적으로 이러한 마이크로옵을 실행하는 고도로 최적화된 RISC 엔진입니다.
이 하이브리드 접근 방식은 현대 CISC 프로세서에 두 세계의 장점을 모두 제공합니다.
- 하위 호환성: 방대한 기존 x86 소프트웨어 라이브러리를 실행할 수 있습니다.
- 성능: RISC와 유사한 실행 코어의 속도와 효율성 이점을 얻습니다.
결론적으로, CISC와 RISC는 프로세서 설계를 위한 두 가지 다른 길을 나타냅니다. 고성능 CPU에서는 그 경계가 흐려졌지만, 단순성, 속도, 저전력 소비라는 핵심 RISC 원칙은 모바일 및 임베디드 컴퓨팅 세계에서 지배적인 힘이 되었습니다.
references